﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using CrmContacto.WebApp.ServiceReferenceCrmLocalizationService;
using CrmContacto.Contracts.Contracts.Localization;
using Web.Framework.Translate;
using System.IO;

namespace CrmContacto.WebApp.Code
{
    public class LocalizationHelper
    {
        private static string CodigoLenguaje {get; set;}

        public static void InitializeLocalization(string codigoLenguaje)
        {
            CodigoLenguaje = codigoLenguaje;
            ReInitialize();
        }

        public static void ReInitialize()
        {
            string codigoLenguaje = CodigoLenguaje;
            LocalizationClient localizationClient = new LocalizationClient();
            Lenguaje lenguaje = localizationClient.ObtenerLenguajeById(codigoLenguaje);

            // Tengo que separar la parte de Javascript y la parte de aplicación
            Dictionary<string, string> termsForApp = new Dictionary<string, string>();
            Dictionary<string, string> termsForJs = new Dictionary<string, string>();

            foreach (PalabraClave pc in lenguaje.PalabraClaveList)
            {
                if (pc.EsJavascript)
                {
                    termsForJs.Add(pc.ClaveId, pc.Traduccion);
                }
                else
                {
                    termsForApp.Add(pc.ClaveId, pc.Traduccion);
                }
            }

            // Inicializo la aplicación
            LocalizationProvider.InitalizeInstance(termsForApp);


            // Genero el archivo Javascript
            string path = HttpContext.Current.Server.MapPath("/Scripts/Localization");
            path = Path.Combine(path, string.Format("Localization.{0}.js", codigoLenguaje));

            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(File.Create(path)))
            {
                foreach (var key in termsForJs.Keys)
                {
                    sw.WriteLine("var {0} = '{1}';", key, termsForJs[key]);
                }

                sw.Close();
            }
        }
    }
}